﻿<UserControl x:Class="ICSharpCode.WpfDesign.Designer.PropertyGrid.PropertyGridView"
             x:Name="root"
             xmlns="http://schemas.microsoft.com/netfx/2007/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:Converters="clr-namespace:ICSharpCode.WpfDesign.Designer.Converters"
             xmlns:PropertyGrid="clr-namespace:ICSharpCode.WpfDesign.Designer.PropertyGrid"
             xmlns:PropertyGridBase="clr-namespace:ICSharpCode.WpfDesign.PropertyGrid;assembly=ICSharpCode.WpfDesign"
             xmlns:Controls="clr-namespace:ICSharpCode.WpfDesign.Designer.Controls"
             Background="{x:Static SystemColors.ControlLightBrush}"
             SnapsToDevicePixels="True">
	
	<UserControl.Resources>
		
		<Style x:Key="ExpandButtonStyle"
		       TargetType="{x:Type ToggleButton}">
			<Setter Property="Focusable"
			        Value="False" />
			<Setter Property="Template">
				<Setter.Value>
					<ControlTemplate TargetType="{x:Type ToggleButton}">
						<Border Background="Transparent">
							<Border Width="9"
							        Height="9"
							        SnapsToDevicePixels="true"
							        BorderBrush="#FF7898B5"
							        BorderThickness="1"
							        CornerRadius="1">
								<Border.Background>
									<LinearGradientBrush EndPoint="1,1"
										StartPoint="0,0">
										<GradientStop Color="White"
										              Offset=".2" />
										<GradientStop Color="#FFC0B7A6"
										              Offset="1" />
									</LinearGradientBrush>
								</Border.Background>
								<Path Margin="1,1,1,1"
								      x:Name="ExpandPath"
								      Fill="Black"
								      Data="M 0 2 L 0 3 L 2 3 L 2 5 L 3 5 L 3 3 L 5 3 L 5 2 L 3 2 L 3 0 L 2 0 L 2 2 Z" />
							</Border>
						</Border>
						<ControlTemplate.Triggers>
							<Trigger Property="IsChecked"
							         Value="True">
								<Setter Property="Data"
								        TargetName="ExpandPath"
								        Value="M 0 2 L 0 3 L 5 3 L 5 2 Z" />
							</Trigger>
						</ControlTemplate.Triggers>
					</ControlTemplate>
				</Setter.Value>
			</Setter>
		</Style>
		
		<Style x:Key="MoreButtonStyle"
		       TargetType="{x:Type ToggleButton}">
			<Setter Property="Focusable"
			        Value="False" />
			<Setter Property="Template">
				<Setter.Value>
					<ControlTemplate TargetType="{x:Type ToggleButton}">
						<Border Background="#F9F9F4"
						        BorderThickness="0 0 0 1"
						        BorderBrush="{x:Static SystemColors.ControlBrush}">
							<!--<TextBlock Text="More..."
                                       VerticalAlignment="Center"
                                       HorizontalAlignment="Left"
                                       Margin="18 0 0 0"
                                       Foreground="{x:Static SystemColors.ControlDarkBrush}" />-->
							<Path x:Name="arrow"
							      Data="M 0 0 L 5 5 L 10 0"
							      HorizontalAlignment="Center"
							      VerticalAlignment="Center"
							      Fill="{x:Static SystemColors.ControlDarkBrush}" />
						</Border>
						<ControlTemplate.Triggers>
							<Trigger Property="IsChecked"
							         Value="True">
								<Setter TargetName="arrow"
								        Property="Data"
								        Value="M 0 5 L 5 0 L 10 5" />
							</Trigger>
						</ControlTemplate.Triggers>
					</ControlTemplate>
				</Setter.Value>
			</Setter>
		</Style>
		
		<Style x:Key="CategoryToggleStyle"
		       TargetType="{x:Type ToggleButton}">
			<Setter Property="Focusable"
			        Value="False" />
			<Setter Property="Template">
				<Setter.Value>
					<ControlTemplate TargetType="{x:Type ToggleButton}">
						<Border BorderThickness="0 1 0 0"
						        BorderBrush="#ECE9D8">
							<StackPanel Orientation="Horizontal"
							            Background="{x:Static  SystemColors.ControlLightBrush}">
								<ToggleButton Style="{StaticResource ExpandButtonStyle}"
								              IsChecked="{Binding IsExpanded}"
								              VerticalAlignment="Center"
								              Margin="3 0 7 0" />
								<TextBlock Text="{Binding Name}"
								           VerticalAlignment="Center"
								           FontWeight="Bold"
								           Foreground="{x:Static SystemColors.ControlDarkBrush}" />
							</StackPanel>
						</Border>
					</ControlTemplate>
				</Setter.Value>
			</Setter>
		</Style>
		
		<Style x:Key="CategoryExpanderStyle"
		       TargetType="Expander">
			<Setter Property="Template">
				<Setter.Value>
					<ControlTemplate TargetType="Expander">
						<DockPanel>
							<ToggleButton Height="17"
							              IsChecked="{Binding IsExpanded}"
							              DockPanel.Dock="Top"
							              Style="{StaticResource CategoryToggleStyle}" />
							<ContentPresenter x:Name="ExpandSite"
								Visibility="Collapsed" />
						</DockPanel>
						<ControlTemplate.Triggers>
							<Trigger Property="IsExpanded"
							         Value="True">
								<Setter Property="Visibility"
								        Value="Visible"
								        TargetName="ExpandSite" />
							</Trigger>
						</ControlTemplate.Triggers>
					</ControlTemplate>
				</Setter.Value>
			</Setter>
		</Style>
		
		<Style x:Key="MoreExpanderStyle"
		       TargetType="Expander">
			<Setter Property="Template">
				<Setter.Value>
					<ControlTemplate TargetType="Expander">
						<DockPanel>
							<ToggleButton IsChecked="{Binding IsExpanded, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"
							              Style="{StaticResource MoreButtonStyle}"
							              DockPanel.Dock="Top"
							              Height="12" />
							<ContentPresenter x:Name="ExpandSite"
								Visibility="Collapsed" />
						</DockPanel>
						<ControlTemplate.Triggers>
							<Trigger Property="IsExpanded"
							         Value="True">
								<Setter Property="Visibility"
								        Value="Visible"
								        TargetName="ExpandSite" />
							</Trigger>
						</ControlTemplate.Triggers>
					</ControlTemplate>
				</Setter.Value>
			</Setter>
		</Style>
		
		<DataTemplate DataType="{x:Type PropertyGridBase:Category}">
			<Expander Header="{Binding Name}"
			          Style="{StaticResource CategoryExpanderStyle}"
			          IsExpanded="{Binding IsExpanded}"
			          Visibility="{Binding IsVisible, Converter={x:Static Converters:CollapsedWhenFalse.Instance}}">
				<ItemsControl ItemsSource="{Binding Properties}" />
				<!--<StackPanel>
                    <ItemsControl ItemsSource="{Binding Properties}" />
                    <Expander Visibility="{Binding MoreProperties.Count, Converter={x:Static Converters:CollapsedWhenZero.Instance}}"
                              Style="{StaticResource MoreExpanderStyle}"
                              IsExpanded="{Binding ShowMore}">
                        <ItemsControl ItemsSource="{Binding MoreProperties}"
                                      Background="#F9F9F4" />
                    </Expander>
                </StackPanel>-->
			</Expander>
		</DataTemplate>
		
		<DataTemplate DataType="{x:Type PropertyGridBase:PropertyNode}">
			<StackPanel Visibility="{Binding IsVisible, Converter={x:Static Converters:CollapsedWhenFalse.Instance}}">
				<Border x:Name="uxPropertyNodeRow"
				        MinHeight="20"
				        BorderThickness="0 0 0 1"
				        BorderBrush="{x:Static SystemColors.ControlBrush}"
				        DockPanel.Dock="Top">
					<DockPanel>
						<DockPanel Width="{Binding FirstColumnWidth, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type PropertyGrid:PropertyGridView}}}"
						           DockPanel.Dock="Left">
							<ToggleButton x:Name="expandButton"
							              DockPanel.Dock="Left"
							              Margin="{Binding Level, Converter={x:Static Converters:LevelConverter.Instance}}"
							              Style="{StaticResource ExpandButtonStyle}"
							              IsChecked="{Binding IsExpanded}"
							              Visibility="{Binding HasChildren, Converter={x:Static Converters:HiddenWhenFalse.Instance}}" />
							<TextBlock Text="{Binding Name}"
							           TextTrimming="CharacterEllipsis"
							           VerticalAlignment="Center"
							           Margin="7 0 0 0"
							           ToolTip="{Binding Description}"
							           FontWeight="{Binding IsSet, Converter={x:Static Converters:BoldWhenTrue.Instance}}"
							           Foreground="{Binding NameForeground}" />
						</DockPanel>
						<Border BorderThickness="1 0 0 0"
						        BorderBrush="{x:Static SystemColors.ControlBrush}">
							<ContentPresenter x:Name="editorContainer"
								Content="{Binding Editor}"
								VerticalAlignment="Center"
								Margin="3 0" />
						</Border>
					</DockPanel>
				</Border>
				<StackPanel Visibility="{Binding IsExpanded, Converter={x:Static Converters:CollapsedWhenFalse.Instance}}">
					<ItemsControl ItemsSource="{Binding Children}"
					              Visibility="{Binding Children.Count, Converter={x:Static Converters:CollapsedWhenZero.Instance}}" />
					<Expander Visibility="{Binding MoreChildren.Count, Converter={x:Static Converters:CollapsedWhenZero.Instance}}"
					          Style="{StaticResource MoreExpanderStyle}">
						<ItemsControl ItemsSource="{Binding MoreChildren}"
						              Background="#F9F9F4" />
					</Expander>
				</StackPanel>
			</StackPanel>
			<DataTemplate.Triggers>
				<DataTrigger Binding="{Binding IsEnabled}"
				             Value="False">
					<Setter TargetName="editorContainer"
					        Property="Opacity"
					        Value="0.5" />
					<Setter TargetName="editorContainer"
					        Property="IsHitTestVisible"
					        Value="False" />
				</DataTrigger>
			</DataTemplate.Triggers>
		</DataTemplate>
		
		<!--<DataTemplate DataType="{x:Type FontFamily}">
            <TextBlock Text="{Binding}"                       
                       FontFamily="{Binding}"
                       FontSize="16"/>
        </DataTemplate>-->
	
	</UserControl.Resources>
	
	<DockPanel>
		<Grid DockPanel.Dock="Top"
		      Height="78">
			<TextBlock Text="Name:"
			           Margin="6,30.275,0,33.948"
			           HorizontalAlignment="Left"
			           Width="32.033" />
			<TextBlock Text="Type:"
			           VerticalAlignment="Top"
			           Margin="6.424,7.998,0,0"
			           Height="13.277" />
			<TextBlock Text="Filter:"
			           HorizontalAlignment="Left"
			           Margin="6,53.553,0,0"
			           VerticalAlignment="Top" />
			
			<Controls:EnterTextBox x:Name="NameTextBox"
				x:FieldModifier="public"
				Text="{Binding Name}"
				IsEnabled="{Binding IsNameEnabled}"
				Margin="44.033,27.275,6,0"
				Height="19.277"
				VerticalAlignment="Top">
				<Control.Style>
					<Style TargetType="TextBox">
						<Style.Triggers>
							<DataTrigger Binding="{Binding IsNameCorrect}"
							             Value="False">
								<Setter Property="BorderBrush"
								        Value="Red" />
							</DataTrigger>
							<MultiDataTrigger>
								<MultiDataTrigger.Conditions>
									<Condition Binding="{Binding IsNameEnabled}"
									           Value="True" />
									<Condition Binding="{Binding CurrentTab}"
									           Value="Events" />
									<Condition Binding="{Binding Text, RelativeSource={RelativeSource Self}}"
									           Value="" />
								</MultiDataTrigger.Conditions>
								<Setter Property="BorderBrush"
								        Value="Red" />
							</MultiDataTrigger>
						</Style.Triggers>
					</Style>
				</Control.Style>
			</Controls:EnterTextBox>
			
			<TextBlock Text="{Binding SingleItem.ComponentType.Name}"
			           ToolTip="{Binding SingleItem.ComponentType}"
			           Margin="44.033,7.998,6,0"
			           Height="13.277"
			           VerticalAlignment="Top" />
			<Controls:EnterTextBox Text="{Binding Filter, UpdateSourceTrigger=PropertyChanged}"
				Margin="44.033,50.553,52,0"
				VerticalAlignment="Top"
				Height="19.277" />
			
			<Button x:Name="clearButton"
			        Content="Clear"
			        Click="clearButton_Click"
			        HorizontalAlignment="Right"
			        VerticalAlignment="Top"
			        Margin="0,49.552,6,0"
			        Height="21.277"
			        Width="40" />
		</Grid>
		
		<Controls:EnumBar Value="{Binding CurrentTab}"
			Container="{Binding ElementName=c1}"
			Margin="5 0 0 5"
			DockPanel.Dock="Top">
			<Controls:EnumBar.ButtonStyle>
				<Style TargetType="ToggleButton">
					<Setter Property="Width"
					        Value="70" />
				</Style>
			</Controls:EnumBar.ButtonStyle>
		</Controls:EnumBar>
		
		<Grid x:Name="c1"
		      Background="White">
			<ScrollViewer HorizontalScrollBarVisibility="Disabled">
				<ItemsControl ItemsSource="{Binding Categories}" />
			</ScrollViewer>
			<ScrollViewer HorizontalScrollBarVisibility="Disabled">
				<ItemsControl ItemsSource="{Binding Events}" />
			</ScrollViewer>
			<Thumb x:Name="thumb"
			       HorizontalAlignment="Left"
			       Width="4"
			       Margin="-2 0 0 0"
			       Cursor="SizeWE">
				<Thumb.RenderTransform>
					<TranslateTransform X="{Binding FirstColumnWidth, ElementName=root}" />
				</Thumb.RenderTransform>
				<Thumb.Template>
					<ControlTemplate>
						<Border Background="Transparent" />
					</ControlTemplate>
				</Thumb.Template>
			</Thumb>
		</Grid>
	
	</DockPanel>

</UserControl>
